package com.lanyou.esb.redis.proxy;

import java.io.IOException;

import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonMappingException;

/**
 * 针对String数据类型的Redis代理接口
 * 
 * @author Davey.wu
 */
public interface StrJedisProxy<T> extends JedisProxy<T> {
	/**
	 * 加载所有数据，以String类型存储到REDIS
	 * 
	 * @throws JsonProcessingException
	 */
	void loadAll() throws JsonProcessingException;

	/**
	 * 根据键值获取REDIS字符串类型数据
	 * 
	 * @param key
	 *            :键值
	 * @return
	 * @throws IOException
	 * @throws JsonMappingException
	 * @throws JsonParseException
	 */
	T get(String key) throws JsonParseException,
			JsonMappingException, IOException;

	/**
	 * 根据指定的键值，将目标存储到REDIS
	 * 
	 * @param key
	 *            :键值
	 * @param target
	 *            ：目标对象
	 * @param database
	 * @return
	 * @throws JsonProcessingException
	 */
	long setex(String key, T target)
			throws JsonProcessingException;

}
